<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:include schemaLocation="RibbonCore.xsd" />
	<xs:element name="form" type="FormType" />
	<xs:complexType name="ClientFileIncludeAttributeType">
		<xs:attribute name="src" use="required">
			<xs:simpleType>
				<xs:restriction base ="xs:string">
					<xs:pattern value ="(\$webresource:|/)(.)+"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		
	</xs:complexType>
	<xs:complexType name="ClientResourcesType">
		<xs:all>
			<xs:element name="internalresources" minOccurs ="0" maxOccurs ="1">
				<xs:complexType>
					<xs:all>
						<xs:element name ="clientincludes" minOccurs ="0" maxOccurs ="1">
							<xs:complexType >
								<xs:choice minOccurs="0" maxOccurs ="100000" >
									<xs:element name ="internaljscriptfile" type="ClientFileIncludeAttributeType" minOccurs ="0" maxOccurs ="1" />
									<xs:element name ="internalcssfile" type="ClientFileIncludeAttributeType" minOccurs ="0" maxOccurs ="1" />
								</xs:choice>
								
							</xs:complexType >
						</xs:element>
						<xs:element name ="clientvariables" minOccurs="0" maxOccurs ="1">
							<xs:complexType>
								<xs:sequence>
									<xs:element name ="internaljscriptvariable" minOccurs ="0" maxOccurs ="100000">
										<xs:complexType>
											<xs:attribute name="name" use ="required">
												<xs:simpleType>
													<xs:restriction base ="xs:string">
														<xs:pattern value="LOCID_([A-Za-z0-9_])+"/>
														<xs:maxLength value ="32"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:attribute>
											<xs:attribute name ="resourceid" use="required" >
												<xs:simpleType>
													<xs:restriction base ="xs:string">
														<xs:pattern value="([A-Za-z0-9_.])+"/>
													</xs:restriction>
												</xs:simpleType>
											</xs:attribute>
											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
					</xs:all>
					
				</xs:complexType>
			</xs:element>
			<xs:element name="isvresources" minOccurs ="0" maxOccurs ="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name ="clientincludes" minOccurs ="0" maxOccurs ="1">
							<xs:complexType >
								<xs:sequence>
									<xs:element name ="webresource" minOccurs ="0" maxOccurs ="100000">
										<xs:complexType>
											<xs:attribute name="path" type="xs:string" use ="required"/>
											<xs:attribute name="type" use ="required">
												<xs:simpleType>
													<xs:restriction base="xs:string">
														<xs:enumeration value="jscript"/>
														<xs:enumeration value ="css" />
													</xs:restriction>
												</xs:simpleType>
											</xs:attribute>
											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					
				</xs:complexType>
			</xs:element>
		</xs:all>
		
	</xs:complexType>
	<xs:complexType name="FormDisplayConditionsType">
		<xs:choice minOccurs="0" maxOccurs="1">
			<xs:element name="Everyone" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					
				</xs:complexType>
			</xs:element>
			<xs:element name="Role" minOccurs="1" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="Id" type="FormGuidType" use="required" />
					
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="FallbackForm" type="xs:boolean" use="optional" />
		<xs:attribute name="Order" type="xs:integer" use="optional" />
		
	</xs:complexType>
	<xs:complexType name="FormLocalizedLabel">
		<xs:attribute name="LCID" type="xs:integer" />
		<xs:attribute name="Text" type="xs:string" />
		
	</xs:complexType>
	<xs:complexType name="FormLocalizedTitles">
		<xs:sequence minOccurs="1" maxOccurs="unbounded">
			<xs:element name="Title" type="FormLocalizedLabel" />
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="FormNavBarAreasType">
		<xs:sequence>
			<xs:element name="NavBarArea" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Titles" minOccurs="1" maxOccurs="1" type="FormLocalizedTitles" />
					</xs:sequence>
					<xs:attribute name="Id" type="xs:string" use="required" />
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="FormNavBarType">
		<xs:choice minOccurs="0" maxOccurs="100000">
			<xs:element minOccurs="0" maxOccurs="1" name="NavBarItem">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Titles" minOccurs="1" maxOccurs="1" type="FormLocalizedTitles" />
					</xs:sequence>
					<xs:attribute name="Icon" type="xs:string" use="required" />
					<xs:attribute name="Url" type="xs:string" use="required" />
					<xs:attribute name="Id" type="xs:string" use="required" />
					<xs:attribute name="PassParams" type="FormCRM_Boolean" use="optional" />
					<xs:attribute name="Sequence" type="xs:nonNegativeInteger" use="optional" />
					<xs:attribute name="Area" type="xs:string" use="optional" />
					<xs:attribute name="Client" type="xs:string" use="optional" />
					<xs:attribute name="AvailableOffline" type="xs:boolean" use="optional" />
					
				</xs:complexType>
			</xs:element>
			<xs:element name="NavBarByRelationshipItem" minOccurs="0" maxOccurs="1">
				<xs:complexType>
					<xs:all>
						<xs:element name="Titles" minOccurs="0" maxOccurs="1" type="FormLocalizedTitles" />
						<xs:element name="ToolTip" minOccurs="0" maxOccurs="1">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Titles" minOccurs="1" maxOccurs="1" type="FormLocalizedTitles" />
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
						<xs:element name="Privileges" minOccurs="0" maxOccurs ="1">
							<xs:complexType>
								<xs:sequence >
									<xs:element name ="Privilege" minOccurs ="1" maxOccurs ="100000">
										<xs:complexType>
											<xs:attribute name ="Entity" type ="xs:string" use ="required"/>
											<xs:attribute name="Privilege" type ="xs:string" use ="required"/>
											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
					</xs:all>
					<xs:attribute name="RelationshipName" type="xs:string" use="required" />
					<xs:attribute name="Id" type="xs:string" use="required" />
					<xs:attribute name="Area" type="xs:string" use="optional" />
					<xs:attribute name="TitleResourceId" type="xs:string" use="optional" />
					<xs:attribute name="Client" type="xs:string" use="optional" />
					<xs:attribute name="AvailableOffline" type="xs:boolean" use="optional" />
					<xs:attribute name="Icon" type="xs:string" use="optional" />
					<xs:attribute name="Sequence" type="xs:nonNegativeInteger" use="optional" />
					<xs:attribute name="Show" type="xs:boolean" use="optional" />
					<xs:attribute name="ViewId" type="FormISVGuid" use="optional" />
					
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute name="ValidForCreate" type="FormCRM_Boolean" use="optional" />
		<xs:attribute name="ValidForUpdate" type="FormCRM_Boolean" use="optional" />
		
	</xs:complexType>
	<xs:complexType name="FormNavigationType">
		<xs:all>
			<xs:element name="NavBarAreas" type="FormNavBarAreasType" minOccurs="0" maxOccurs="1" />
			<xs:element name="NavBar" type="FormNavBarType" minOccurs="0" maxOccurs="1" />
		</xs:all>
		
	</xs:complexType>
	<xs:complexType name ="FormParametersType">
		<xs:choice minOccurs="1" maxOccurs ="100000">
			<xs:element name ="querystringparameter" type="FormQueryStringParameterType" minOccurs ="0" maxOccurs ="1" />
		</xs:choice>
		
	</xs:complexType>
	<xs:complexType name="FormQueryStringParameterType">
		<xs:attribute name="name" type="FormQueryStringParameterNameAttributeType" use="required" />
		<xs:attribute name="type" type="FormParameterAttributeType" use="required" />
		
	</xs:complexType>
	<xs:complexType name="FormType">
		<xs:all>
			<xs:element name="hiddencontrols" minOccurs="0" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="data" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:attribute name="id" type="xs:string" />
								<xs:attribute name="datafieldname" type="xs:string" />
								<xs:attribute name="classid" type="FormGuidType" />
								
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					
				</xs:complexType>
			</xs:element>
			<xs:element name="tabs" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="tab" minOccurs="1" maxOccurs="100">
							<xs:complexType>
								<xs:all>
									<xs:element name="labels" type="FormXmlLabelsType" minOccurs="0" maxOccurs="1" />
									<xs:element name="columns" minOccurs="1" maxOccurs="1">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="column" minOccurs="1" maxOccurs="2">
													<xs:complexType>
														<xs:sequence>
															<xs:element name="sections" minOccurs="0" maxOccurs="1">
																<xs:complexType>
																	<xs:sequence>
																		<xs:element name="section" minOccurs="0" maxOccurs="unbounded">
																			<xs:complexType>
																				<xs:all>
																					<xs:element name="labels" type="FormXmlLabelsType" minOccurs="0" maxOccurs="1" />
																					<xs:element name="rows" minOccurs="0" maxOccurs="1">
																						<xs:complexType>
																							<xs:sequence>
																								<xs:element name="row" minOccurs="0" maxOccurs="unbounded">
																									<xs:complexType>
																										<xs:sequence>
																											<xs:element name="cell" minOccurs="0" maxOccurs="unbounded">
																												<xs:complexType>
																													<xs:all>
																														<xs:element name="labels" type="FormXmlLabelsType" minOccurs="0" maxOccurs="1" />
																														<xs:element name="control" type="FormXmlControlType" minOccurs="0" maxOccurs="1" />
																														<xs:element name="events" type="FormXmlEventsType" minOccurs="0" maxOccurs="1" />
																													</xs:all>
																													<xs:attribute name="auto" type="xs:boolean" />
																													<xs:attribute name="addedby" type="xs:string" />
																													<xs:attributeGroup ref="FormXmlCellCommon"/>
																												</xs:complexType>
																											</xs:element>
																										</xs:sequence>
																										<xs:attribute name="addedby" type="xs:string" />
																										<xs:attributeGroup ref="FormXmlRowCommon"/>
																									</xs:complexType>
																								</xs:element>
																							</xs:sequence>
																							<xs:attribute name="addedby" type="xs:string" />
																							
																						</xs:complexType>
																					</xs:element>
																				</xs:all>
																				<xs:attribute name="group" type="xs:string" />
																				<xs:attribute name="name" type="xs:string" />
																				<xs:attribute name="showlabel" type="xs:boolean" />
																				<xs:attribute name="labelid" type="FormGuidType" use="optional" />
																				<xs:attribute name="showbar" type="xs:boolean" />
																				<xs:attribute name="id" type="FormGuidType" />
																				<xs:attribute name="IsUserDefined" type="xs:string" />
																				<xs:attribute name="height" type="xs:string" />
																				<xs:attribute name="locklevel" type="xs:nonNegativeInteger" />
																				<xs:attribute name="layout" type="xs:string" />
																				<xs:attribute name="addedby" type="xs:string" />
																				<xs:attribute name="visible" type="xs:boolean" />
																				<xs:attributeGroup ref="FormXmlSectionCommon"/>
																				
																			</xs:complexType>
																		</xs:element>
																	</xs:sequence>
																	<xs:attribute name="addedby" type="xs:string" />
																	
																</xs:complexType>
															</xs:element>
														</xs:sequence>
														<xs:attribute name="width" type="FormPercentageType" use="required" />
														
														
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											
										</xs:complexType>
									</xs:element>
									<xs:element name="events" type="FormXmlEventsType" minOccurs="0" maxOccurs="1" />
								</xs:all>
								<xs:attribute name="group" type="xs:string" />
								<xs:attribute name="name" type="xs:string" />
								<xs:attribute name="verticallayout" type="xs:boolean" />
								<xs:attribute name="showlabel" type="xs:boolean" />
								<xs:attribute name="labelid" type="FormGuidType" use="optional" />
								<xs:attribute name="id" type="FormGuidType" />
								<xs:attribute name="IsUserDefined" type="xs:string" />
								<xs:attribute name="locklevel" type="xs:nonNegativeInteger" />
								<xs:attribute name="addedby" type="xs:string" />
								<xs:attribute name="expanded" type="xs:boolean" />
								<xs:attribute name="visible" type="xs:boolean" />
								
								
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="showlabels" type="xs:boolean" />
					<xs:attribute name="addedby" type="xs:string" />
					
				</xs:complexType>
			</xs:element>
			<xs:element name="header" type="FormXmlHeaderFooterType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="footer" type="FormXmlHeaderFooterType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="events" type="FormXmlEventsType" minOccurs="0" maxOccurs="1" />
			<xs:element name="formLibraries" type="FormXmlLibraryType" minOccurs="0" maxOccurs="1" />
			<xs:element name="externaldependencies" type="FormXmlExternalDependenciesType" minOccurs="0" maxOccurs="1" />
			<xs:element name="formparameters" type="FormParametersType" minOccurs="0" maxOccurs="1">
				<xs:unique name="UniqueName">
					<xs:selector xpath ="./querystringparameter"/>
					<xs:field xpath ="@name"/>
				</xs:unique>
			</xs:element>
			<xs:element name ="clientresources" type ="ClientResourcesType" minOccurs ="0" maxOccurs ="1"></xs:element>
			<xs:element name="Navigation" type="FormNavigationType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="DisplayConditions" type="FormDisplayConditionsType" minOccurs="0" maxOccurs="1" />
			<xs:element name="RibbonDiffXml" type="RibbonEntityDiffXmlType" minOccurs="0" maxOccurs="1" />
		</xs:all>
		<xs:attribute name="enablerelatedinformation" type="xs:boolean" />
		<xs:attribute name="relatedInformationCollapsed" type="xs:boolean" />
		<xs:attribute name="hasmargin" type="xs:boolean" />
		<xs:attribute name="addedby" type="xs:string" />
		<xs:attribute name="shownavigationbar" type="xs:boolean" />
		
	</xs:complexType>
	<xs:complexType name="FormXmlControlType">
		<xs:sequence>
			<xs:element name="parameters" minOccurs="0" maxOccurs="1">
				<xs:complexType>
					<xs:choice minOccurs="1" maxOccurs="1">
						<!-- LATER: (TobinZ, 2008-07-24) - Divide this list up into sets that are valid together. -->
						<xs:choice minOccurs="1" maxOccurs="unbounded">
							<xs:element name="Url" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="PassParameters" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="Security" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="Scrolling" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="Border" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="Preload" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="IsPassword" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<!--Web Resource related parameters. Included in this section since they 
                can include Url, PassParameters etc-->
							<xs:element name="Height" type="xs:unsignedInt" minOccurs="0" maxOccurs="1"/>
							<xs:element name="Width" type="xs:unsignedInt" minOccurs="0" maxOccurs="1"/>
							<xs:element name="AltText" type="xs:string" minOccurs="0" maxOccurs="1"/>
							<xs:element name="SizeType" type="WebResourceSizeType" minOccurs="0" maxOccurs="1"/>
							<xs:element name="HorizontalAlignment" type="ImageHorizontalAlignmentType" minOccurs="0" maxOccurs="1"/>
							<xs:element name="VerticalAlignment" type="ImageVerticalAlignmentType" minOccurs="0" maxOccurs="1"/>
							<xs:element name="Data" type="xs:string" minOccurs="0" maxOccurs="1" />
						</xs:choice>
						<!-- Parameters for the subgrid control -->
						<xs:choice minOccurs="1" maxOccurs="unbounded">
							<xs:element name="ViewId" type="FormGuidType" minOccurs="0" maxOccurs="1" />
							<xs:element name="IsUserView" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="IsUserChart" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="RelationshipName" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="RelationshipRoleOrdinal" type="RelationshipRoleOrdinalType" minOccurs="0" maxOccurs="1" />
							<xs:element name="TargetEntityType" type="xs:string" minOccurs="1" maxOccurs="1" />
							<xs:element name="AutoExpand" type="GridResizeType" minOccurs="0" maxOccurs="1" />
							<xs:element name="RecordsPerPage" type="xs:unsignedShort" minOccurs="0" maxOccurs="1" />
							<xs:element name="EnableQuickFind" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="EnableJumpBar" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="EnableViewPicker" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="ViewIds" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="ChartGridMode" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="VisualizationId" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="EnableChartPicker" type="xs:boolean" minOccurs="0" maxOccurs="1" />
						</xs:choice>
						<!-- Parameters for the lookup control -->
						<xs:choice minOccurs="1" maxOccurs="unbounded">
							<xs:element name="DefaultViewId" type="FormGuidType" minOccurs="0" maxOccurs="1" />
							<xs:element name="FilterRelationshipName" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="DependentAttributeName" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="DependentAttributeType" type="xs:string" minOccurs="0" maxOccurs="1" />
							<xs:element name="AutoResolve" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="ResolveEmailAddress" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="DefaultViewReadOnly" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="ViewPickerReadOnly" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="AllowFilterOff" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="DisableMru" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="DisableQuickFind" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="DisableViewPicker" type="xs:boolean" minOccurs="0" maxOccurs="1" />
							<xs:element name="AvailableViewIds" type="xs:string" minOccurs="0" maxOccurs="1" />
						</xs:choice>
					</xs:choice>
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:string" />
		<xs:attribute name="classid" type="FormGuidType" />
		<xs:attribute name="datafieldname" type="xs:string" />
		<xs:attribute name="disabled" type="xs:boolean" />
		<xs:attribute name="addedby" type="xs:string" />
		
	</xs:complexType>
	<xs:complexType name="FormXmlLibraryType">
		<xs:sequence>
			<xs:element name="Library" minOccurs="1" maxOccurs="50">
				<xs:complexType>
					<xs:attribute name="name" type="xs:string" use="required" />
					<xs:attribute name="libraryUniqueId" type="xs:string" use="required" />
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:simpleType name="CrmEventType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="DataEvent" />
			<xs:enumeration value="ControlEvent" />
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="FormXmlHandlerType">
		<xs:sequence>
			<xs:element name="dependencies" minOccurs="0" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:attribute name="id" type="xs:string" />
								
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="functionName" type="xs:string" use="required" />
		<xs:attribute name="libraryName" type="xs:string" use="required" />
		<xs:attribute name="handlerUniqueId" type="xs:string" use="required" />
		<xs:attribute name="enabled" type="xs:boolean" />
		<xs:attribute name="passExecutionContext" type="xs:boolean" />
		<xs:attribute name="parameters" type="xs:string" />
		
	</xs:complexType>
	<xs:complexType name="FormXmlEventsType">
		<xs:sequence>
			<xs:element name="event" minOccurs="1" maxOccurs="unbounded">
				<xs:complexType>
					<xs:all>
						<xs:element name="Handlers" minOccurs="0" maxOccurs="1">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Handler" type="FormXmlHandlerType" minOccurs="0" maxOccurs="50" />
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
						<xs:element name="InternalHandlers" minOccurs="0" maxOccurs="1">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="Handler" type="FormXmlHandlerType" minOccurs="0" maxOccurs="50" />
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
						<xs:element name="dependencies" minOccurs="0" maxOccurs="1">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
										<xs:complexType>
											<xs:attribute name="id" type="xs:string" />
											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								
							</xs:complexType>
						</xs:element>
					</xs:all>
					<xs:attribute name="name" type="xs:string" />
					<xs:attribute name="BehaviorInBulkEditForm" type="BehaviorInBulkEditForm" />
					<xs:attribute name="application" type="xs:boolean" />
					<xs:attribute name="active" type="xs:boolean" />
					<xs:attribute name="eventType" type="CrmEventType" />
					<xs:attribute name="attribute" type="xs:string" />
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="FormXmlExternalDependenciesType">
		<xs:sequence>
			<xs:element name="dependency" minOccurs="1" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="id" type="xs:string" />
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="FormXmlLabelsType">
		<xs:sequence>
			<xs:element name="label" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="description" use="required" type="xs:string" />
					<xs:attribute name="languagecode" use="required" type="xs:positiveInteger" />
					<xs:attribute name="addedby" type="xs:string" />
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		
	</xs:complexType>
	<xs:complexType name="FormXmlHeaderFooterType">
		<xs:sequence>
			<xs:element name="rows" minOccurs="1" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="row" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="cell"  minOccurs="0" maxOccurs="unbounded">
										<xs:complexType>
											<xs:all>
												<xs:element name="labels" type="FormXmlLabelsType" minOccurs="0" maxOccurs="1" />
												<xs:element name="control" type="FormXmlControlType" minOccurs="0" maxOccurs="1" />
											</xs:all>
											<xs:attributeGroup ref="FormXmlCellCommon"/>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								<xs:attributeGroup ref="FormXmlRowCommon"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="FormGuidType" use="required" />
		<xs:attributeGroup ref="FormXmlSectionCommon" />
	</xs:complexType>
	<xs:attributeGroup name="FormXmlSectionCommon">
		<xs:attribute name="columns" type="xs:nonNegativeInteger" />
		<xs:attribute name="labelwidth" type="xs:nonNegativeInteger" />
		<xs:attribute name="celllabelalignment" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Center"/>
					<xs:enumeration value="Left"/>
					<xs:enumeration value="Right"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:attribute name="celllabelposition" use="optional">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Top"/>
					<xs:enumeration value="Left"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		
	</xs:attributeGroup>
	<xs:attributeGroup name="FormXmlRowCommon">
		<xs:attribute name="height" type="xs:string" />
		
	</xs:attributeGroup>
	<xs:attributeGroup name="FormXmlCellCommon">
		<xs:attribute name="id" type="FormGuidType" />
		<xs:attribute name="showlabel" type="xs:boolean" />
		<xs:attribute name="labelid" type="FormGuidType" use="optional" />
		<xs:attribute name="locklevel" type="xs:nonNegativeInteger" />
		<xs:attribute name="rowspan" type="xs:nonNegativeInteger" />
		<xs:attribute name="colspan" type="xs:nonNegativeInteger" />
		<xs:attribute name="userspacer" type="xs:boolean" />
		<xs:attribute name="ispreviewcell" type="xs:boolean"/>
		<xs:attribute name="visible" type="xs:boolean" />
		
		
	</xs:attributeGroup>
	<xs:simpleType name="BehaviorInBulkEditForm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Disabled" />
			<xs:enumeration value="EnabledButNoRender" />
			<xs:enumeration value="Enabled" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FormCRM_Boolean">
		<xs:restriction base="xs:unsignedByte">
			<xs:minInclusive value="0" />
			<xs:maxInclusive value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FormGuidType">
		<xs:annotation>
			<xs:documentation xml:lang="en">
				The representation of a GUID, generally the id of an element.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FormISVGuid">
		<xs:restriction base="xs:string">
			<xs:pattern value="\{?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\}?" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name ="FormParameterAttributeType">
		<xs:restriction base ="xs:string">
			<xs:enumeration value ="Boolean" />
			<xs:enumeration value ="DateTime" />
			<xs:enumeration value ="Double" />
			<xs:enumeration value ="EntityType" />
			<xs:enumeration value ="Integer" />
			<xs:enumeration value ="Long" />
			<xs:enumeration value ="PositiveInteger" />
			<xs:enumeration value ="SafeString" />
			<xs:enumeration value ="UniqueId" />
			<xs:enumeration value ="UnsignedInt" />
		</xs:restriction>
	</xs:simpleType >
	<xs:simpleType name ="FormParameterPassAsAttributeType">
		<xs:restriction base ="xs:string">
			<xs:enumeration value ="QueryString" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FormPercentageType">
		<xs:restriction base="xs:string">
			<xs:pattern value="^(100|[0-9]{1,2})%$" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FormQueryStringParameterNameAttributeType">
		<xs:restriction base="xs:string">
			<xs:pattern value="(?![cC][rR][mM]_)([A-Za-z0-9])+([_])+([A-Za-z0-9_])*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="GridResizeType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Auto"/>
			<xs:enumeration value="Fixed"/>
			<xs:enumeration value="AutoWithFixedMax"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ImageHorizontalAlignmentType">
		<xs:restriction base ="xs:string">
			<xs:enumeration value ="Left" />
			<xs:enumeration value ="Right" />
			<xs:enumeration value ="Center" />
			<xs:enumeration value ="NotSet" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ImageVerticalAlignmentType">
		<xs:restriction base ="xs:string">
			<xs:enumeration value ="Top" />
			<xs:enumeration value ="Middle" />
			<xs:enumeration value ="Bottom" />
			<xs:enumeration value ="NotSet" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="RelationshipRoleOrdinalType">
		<xs:restriction base="xs:unsignedByte">
			<xs:enumeration value="1" />
			<xs:enumeration value="2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name ="WebResourceSizeType">
		<xs:restriction base ="xs:string">
			<xs:enumeration value ="StretchToFit" />
			<xs:enumeration value ="StretchMaintainAspectRatio" />
			<xs:enumeration value ="Original" />
			<xs:enumeration value ="Specific" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="solutionactionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Added" />
			<xs:enumeration value="Removed" />
			<xs:enumeration value="Modified" />
		</xs:restriction>
	</xs:simpleType >
	<xs:attributeGroup name="FormXmlBaseElementCommon">
		<xs:attribute name="solutionaction" type="solutionactionType" />
	</xs:attributeGroup>
	<xs:complexType name ="solutionStringType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionBooleanType">
		<xs:simpleContent>
			<xs:extension base="xs:boolean">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionFormGuidType">
		<xs:simpleContent>
			<xs:extension base="FormGuidType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionUnsignedIntType">
		<xs:simpleContent>
			<xs:extension base="xs:unsignedInt">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionWebResourceSizeType">
		<xs:simpleContent>
			<xs:extension base="WebResourceSizeType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionImageHorizontalAlignmentType">
		<xs:simpleContent>
			<xs:extension base="ImageHorizontalAlignmentType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionImageVerticalAlignmentType">
		<xs:simpleContent>
			<xs:extension base="ImageVerticalAlignmentType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionRelationshipRoleOrdinalType">
		<xs:simpleContent>
			<xs:extension base="RelationshipRoleOrdinalType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionGridResizeType">
		<xs:simpleContent>
			<xs:extension base="GridResizeType">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name ="solutionUnsignedShortType">
		<xs:simpleContent>
			<xs:extension base="xs:unsignedShort">
				<xs:attributeGroup ref="FormXmlBaseElementCommon"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:schema>
